package cn.yuanqiao.manage.mapper;

import cn.yuanqiao.manage.domain.YqdaMdataList;
import cn.yuanqiao.manage.domain.YqdaMdataListShy;
import cn.yuanqiao.manage.domain.YqdaRelevance;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 元数据明细Mapper接口
 * 
 * @author yuanqiao
 * @date 2023-06-09
 */
public interface YqdaMdataListMapper
{
    /**
     * 查询元数据明细
     * 
     * @param id 元数据明细主键
     * @return 元数据明细
     */
    public YqdaMdataList selectYqdaMdataListById(Long id);

    /**
     * 查询元数据明细列表
     * 
     * @param yqdaMdataList 元数据明细
     * @return 元数据明细集合
     */
    public List<YqdaMdataList> selectYqdaMdataListList(YqdaMdataList yqdaMdataList);

    /**
     * 查询元数据明细列表  精确查询
     *
     * @param yqdaMdataList 元数据明细
     * @return 元数据明细集合
     */
    public List<YqdaMdataList> selectYqdaMdataListListPrecise(YqdaMdataList yqdaMdataList);

    /**
     * 新增元数据明细
     * 
     * @param yqdaMdataList 元数据明细
     * @return 结果
     */
    public int insertYqdaMdataList(YqdaMdataList yqdaMdataList);

    /**
     * 修改元数据明细
     * 
     * @param yqdaMdataList 元数据明细
     * @return 结果
     */
    public int updateYqdaMdataList(@Param("yqdaMdataList") YqdaMdataList yqdaMdataList, @Param("ids") String ids);

    /**
     * 删除元数据明细
     * 
     * @param id 元数据明细主键
     * @return 结果
     */
    public int deleteYqdaMdataListById(Long id);

    /**
     * 删除元数据明细
     *
     * @param id 元数据明细主键
     * @return 结果
     */
    public int deleteYqdaMdataListByGroupId(Long id);

    /**
     * 批量删除元数据明细
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteYqdaMdataListByIds(Long[] ids);

    String copyIsRepeat(@Param("ids") String ids, @Param("groupId") Long groupId, @Param("type") Integer type);

    List<YqdaMdataList> getDataListsByIds(String ids);

    YqdaMdataList isExist(@Param("fieldName")String fieldName, @Param("groupId") Long groupId, @Param("type") Integer type);

    List<Map<String,Object>> selectYqdaMdataListListforshy(@Param("groupId")Long groupId, @Param("type")Integer type, @Param("fieldCaption")String fieldCaption, @Param("fieldName")String fieldName, @Param("categoryId")Long categoryId);

    Long selectshybyid(@Param("mdataid")Long mdataid, @Param("type") Integer type, @Param("groupId") Long groupId, @Param("categoryId") Long categoryId);

    int addmdatatoshy(YqdaMdataListShy yqdaMdataListShy);

    int deletemdatafromshy(YqdaMdataListShy yqdaMdataListShy);

    List<Map<String, Object>> getrelevancefield(@Param("field")String field,@Param("nowlevel") Integer nowlevel,@Param("relelevel") Integer relelevel,@Param("fieldtype") Integer fieldtype,@Param("groupId") Long groupId,@Param("noequals")String noequals);

    int addrelevance(YqdaRelevance relevance);

    int gethadcount(YqdaRelevance relevance);

    int editrele(YqdaRelevance relevance);

    int delterele(@Param("ids")List ids);

    YqdaRelevance getreledetail(@Param("id") Long id);

    List<YqdaRelevance> getrelevancelist(YqdaRelevance relevance);

    String getSingle(@Param("sql") String sql);

    List<Map<String, String>> getListResult1(@Param("sql") String sql);

    void excu(@Param("sql") String sql);

    List<YqdaMdataList> selectYqdaMdataListListforexport(@Param("groupId")Long groupId,@Param("type") Integer type,@Param("fieldName") String fieldName,@Param("ids") List ids);
}
